package com.engineering.elink.service;

import java.util.List;
import java.util.Map;

import com.engineering.elink.co.CompanyCo;
import com.engineering.elink.co.CompanyInsertCo;
import com.engineering.elink.co.CompanyUpdateCo;
import com.engineering.elink.domain.Company;

public interface CompanyService {
	/**
	 * 修改企业信息
	 * 
	 * @param companyUpdateCo
	 */
	public void updateCompanyInfo(CompanyUpdateCo companyUpdateCo);

	/**
	 * 企业登录
	 * 
	 * @param email
	 * @param passwd
	 * @return
	 */
	public Map<String, Object> login(String email, String passwd);

	/**
	 * 企业注册流程一：获取图片验证码
	 * 
	 * @param verifyToken
	 * @param verifyCode
	 * @param status
	 */
	public void regCompanyWithVerifyCode(String verifyToken, String verifyCode);

	/**
	 * 企业注册流程二：发送短信验证码
	 * 
	 * @param verifyToken
	 * @param verifyCode
	 * @return
	 */
	public boolean regCompanyWithSendPhoneCode(String phone,
			String verifyToken, String verifyCode);

	/**
	 * 企业注册流程三：验证码短信验证码
	 * 
	 * @param phone
	 * @param passwd
	 * @param verifyToken
	 * @param verifyCode
	 * @return
	 */
	public boolean regCompanyWithCheckPhoneCode(String email, String phone,
			String passwd, String verifyToken, String verifyCode);

	/**
	 * 企业注册流程四：填写企业详细信息
	 * 
	 * @param companyCo
	 * @return
	 */
	public Map<String, Object> regCompanyWithBaseInfo(
			CompanyInsertCo companyCo, String verifyToken);

	/**
	 * 获取企业基本信息 访问本用户的 包括简介等 业务层接口
	 * 
	 * @param userId
	 * @return
	 */
	public Map<String, Object> getBaseInfoByUserId(String userId);
	
	/**
	 * 获取企业基本信息 访问其他用户的
	 * @param companyId
	 * @return
	 */
	public Map<String, Object> getBaseInfoByCompanyId(String companyId);
	
	/**
	 * 统计企业招聘的信息
	 * @param fkId
	 * @return
	 */
	public Map<String, Object> getRecruit(String companyId);

	/**
	 * 统计当前用户的企业资源
	 * @param fkId
	 * @return
	 */
	public Map<String, Object> getResource(String companyId);

	/**
	 * 统计当前用户的企业的概况
	 * @param fkId
	 * @return
	 */
	public Map<String, Object> getBasicFacts(String companyId);
	
	/**
	 * 获取当前的企业信息
	 * @param userId
	 * @return
	 */
	public Company getCurrentCompanyInfo (String userId);
	
	/**
	 * 获取好评公司
	 * @param count
	 * @return
	 */
	public List<Map<String, Object>> getPraiseCompany(int count);

	/**
	 * 统计公司数，点评数,发布招聘数
	 */
	public Map<String, Object> getStatistics();

	/**
	 * 根据条件搜索公司
	 * @param co
	 * @return
	 */
	public Map<String, Object> getCompanyList(CompanyCo co);

}
